package org.example3;


import java.lang.reflect.ParameterizedType;

/**
 *  针对一般的泛型类
 *  通过默认覆盖,产生父子关系.然后通过getGenericSuperclass获取
 */
public class AppGeneric {
    public static void main(String[] args) {
        MyGenericClass<Thread> myGenericClass = new MyGenericClass<Thread>() {
            //有覆盖,产生父子关系
        };

//        这种方式没有产生覆盖,不能使用
//        MyGenericClass<Thread> myGenericClass = new MyGenericClass<Thread>();

        //注意此时是: org.example3.AppGeneric$1, 不是原始的AppGeneric
        System.out.println(myGenericClass.getClass().getName());

        ParameterizedType type =(ParameterizedType) myGenericClass.getClass().getGenericSuperclass();
        Class clazz =(Class) type.getActualTypeArguments()[0];
//        String typeName = type.getActualTypeArguments()[0].getTypeName();
        System.out.println(clazz);


    }
}